%!TEX root = all.tex

\section{Introduction}
Numerical algorithms are widely used in various fields for different purposes including
development and testing of the models resembling behavior of real life systems. Code
verification and validation are methods used to assess accuracy and build confidence in
the algorithms \cite{R1}.
\\
\\
There are many definitions of the terms verification and validation. Charles Hirsch
defines them as:

\begin{quotation}
\em \noindent Verification is "the process of determining that a model implementation
accurately represents the underlying mathematical model and its solutions" \cite{R1}.
\\
\\
Validation is "the process of determining the degree to which a model is an
accurate representation of the real world from the perspective of the intended
uses of the model"\cite{R2}.
\end{quotation}

\noindent In other words, validation and verification are two different steps in code development
and assessment. Validation is used to determine how close the solution of the discretized governing equations
represents a phenomenon; while verification ensures that the system of equations are being solved
within the allowed error limits.
\\
\\
Roache defines code verification as:

\begin{quotation}
\em \noindent "The [code] author defines precisely what continuum partial differential
equations and continuum boundary conditions are being solved, and convincingly
demonstrates that they are solved correctly, i.e. usually with some order of
accuracy, and always consistently, so that as some measure of discretization (e.g.
mesh increments) $\Delta\rightarrow$ 0, the code produces a solution to the continuum
equations" \cite{R3}.
\end{quotation}

\noindent Thus, code verification is used to verify that the code solves the numerical model or set of
equations consistently and follows the established theoretical order of accuracy of the
discretization method. Verification is based on comparing the numerical results with
analytical or exact solutions.
\\
\\
Various methods are used for verification including
Method of Exact Solutions and Method of Manufactured Solutions. This paper focuses
on the Method of Generated Solutions (MGS) \cite{R10} and its application for verification of
the ICE (Implicit, Continuous fluid, Eulerian), a semi-implicit finite volume computational fluid dynamics (CFD) code. In this paper, we analyze the order of accuracy, consistency of
the discretization errors and accuracy for a 3D problem.
\\
\\
We stress that both MGS and MMS are applicable when exact analytic solutions are not available,
i.e. when the Method of Exact Solutions can not be applied.  Our approach is similar to the Method of Nearby 
Problems introduced by Roy, et. al. \cite{R12} for verifying 1-dimensional Burger's equation.  In our evaluations 
we analyzed 1D, 2D, and 3D problems with the ICE code, and present here (for brevity) only 3D results.  The other
1D and 2D results can be found in our Technical Report \cite{R13}.